﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Pibby.Core.Views;
using Pibby.Core.IO;

namespace Pibby.Core.Tests.Stubs
{
	public class PodcatcherView : IPodcatcherView
	{
		public event EventHandler Initialising;

		public void SimulateInitialising()
		{
			if (Initialising != null)
				Initialising(this, EventArgs.Empty);
		}

		public event EventHandler InitialiseComplete;

		public void SimulateInitialiseComplete()
		{
			if (InitialiseComplete != null)
				InitialiseComplete(this, EventArgs.Empty);
		}

		public event EventHandler ClosingView;

		public void SimulateCloseView()
		{
			if (ClosingView != null)
				ClosingView(this, EventArgs.Empty);
		}

		public bool SettingsLoadedCalled { get; private set; }

        public void SettingsLoaded(IUserSettings settings)
		{
			SettingsLoadedCalled = true;
		}

		public bool SettingsChangedCalled { get; private set; }

        public void SettingsChanged(IUserSettings settings)
		{
			SettingsChangedCalled = true;
		}

		public int Width
		{
			get { throw new NotImplementedException(); }
		}

		public int Height
		{
			get { throw new NotImplementedException(); }
		}

		public int Top
		{
			get { throw new NotImplementedException(); }
		}

		public int Left
		{
			get { throw new NotImplementedException(); }
		}

		public int SplitterDistance
		{
			get { throw new NotImplementedException(); }
		}

		public int CurrentView
		{
			get { throw new NotImplementedException(); }
		}

		public event EventHandler<FilePersistenceEventArgs> ImportPodcasts;

		public event EventHandler<FilePersistenceEventArgs> ExportPodcasts;

		public event EventHandler<NewPodcastEventArgs> AddPodcast;

		public event EventHandler<RemovePodcastEventArgs> RemovePodcast;

		public event EventHandler<PortableMediaSettingsEventArgs> PortableMediaSettingsChanged;

		public event EventHandler<RemovableDriveEventArgs> RemovableDeviceArrived;

		public event EventHandler<RemovableDriveEventArgs> RemovableDeviceRemoved;

		public event EventHandler<TransferCommandEventArgs> TransferContent;

		public event EventHandler EjectDevice;


		public void LoadSubscriptions(PodcastCollection collection)
		{
			throw new NotImplementedException();
		}


		public void LoadEpisodes(EpisodeCollection collection)
		{
			throw new NotImplementedException();
		}


		public event EventHandler CheckForEpisodes;

		public event EventHandler<EpisodeEventArgs> IgnoreEpisode;

		public event EventHandler<EpisodeEventArgs> SelectEpisode;

		public event EventHandler<EpisodeEventArgs> SelectEpisodeForDownload;

		public event EventHandler SelectAllEpisodesForDownload;

		public event EventHandler ClearAllEpisodesForDownload;

		public event EventHandler DownloadEpisodes;

		public void RssRefreshStarting(int items)
		{
			throw new NotImplementedException();
		}

		public void RssRefreshProgress(int item)
		{
			throw new NotImplementedException();
		}

		public void RssRefreshFinished(int i)
		{
			throw new NotImplementedException();
		}

		public void ShowEpisodes(EpisodeCollection episodes)
		{
			throw new NotImplementedException();
		}

		public void RefreshEpisodes(EpisodeCollection episodes)
		{
			throw new NotImplementedException();
		}

		public void ShowEpisodeInfo(Episode episode)
		{
			throw new NotImplementedException();
		}

		public void EpisodeDownloadStarting(int items)
		{
			throw new NotImplementedException();
		}

		public void EpisodeDownloadProgress(int item)
		{
			throw new NotImplementedException();
		}

		public void EpisodeDownloadFinished(int i)
		{
			throw new NotImplementedException();
		}


		public event EventHandler<PodcastEventArgs> PodcastSelected;

		public void ShowPodcastInfo(Podcast podcast, EpisodeCollection episodes)
		{
			throw new NotImplementedException();
		}


		public event EventHandler<SearchEventArgs> SearchPodcasts;

		public event EventHandler<PodcastSearchEventArgs> SearchPodcast;

		public event EventHandler<SearchEventArgs> SearchEpisodes;


		public void LoadSearchResults(PodcastCollection collection)
		{
			throw new NotImplementedException();
		}


		event EventHandler<EpisodeDownloadEventArgs> IPodcatcherView.DownloadEpisodes
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}


		public void ReportError(string message)
		{
			throw new NotImplementedException();
		}


		public void ShowDeviceStatus(ViewModels.PortableMediaViewModel vm)
		{
			throw new NotImplementedException();
		}

		public void RefreshDeviceStatus(ViewModels.PortableMediaViewModel vm)
		{
			throw new NotImplementedException();
		}


		public void TransferStarting(int items)
		{
			throw new NotImplementedException();
		}

		public void TransferProgress(int item)
		{
			throw new NotImplementedException();
		}

		public void TransferFinished(int i)
		{
			throw new NotImplementedException();
		}


		public event EventHandler RefreshNavigationList;


		//public SubView SubView
		//{
		//    get { throw new NotImplementedException(); }
		//}

		//public event EventHandler<SubViewEventArgs> SubViewChanged;

		event EventHandler IPodcatcherView.Initialising
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		event EventHandler IPodcatcherView.InitialiseComplete
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		event EventHandler IPodcatcherView.ClosingView
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

        void IPodcatcherView.SettingsLoaded(IUserSettings settings)
		{
			throw new NotImplementedException();
		}

		void IPodcatcherView.SettingsChanged(IUserSettings settings)
		{
			throw new NotImplementedException();
		}

		int IPodcatcherView.Width
		{
			get { throw new NotImplementedException(); }
		}

		int IPodcatcherView.Height
		{
			get { throw new NotImplementedException(); }
		}

		int IPodcatcherView.Top
		{
			get { throw new NotImplementedException(); }
		}

		int IPodcatcherView.Left
		{
			get { throw new NotImplementedException(); }
		}

		int IPodcatcherView.SplitterDistance
		{
			get { throw new NotImplementedException(); }
		}

		int IPodcatcherView.CurrentView
		{
			get { throw new NotImplementedException(); }
		}

		//SubView IPodcatcherView.SubView
		//{
		//    get { throw new NotImplementedException(); }
		//}


		//event EventHandler<SubViewEventArgs> IPodcatcherView.SubViewChanged
		//{
		//    add { throw new NotImplementedException(); }
		//    remove { throw new NotImplementedException(); }
		//}

		event EventHandler<NewPodcastEventArgs> IPodcatcherView.AddPodcast
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		//event EventHandler<PodcastEventArgs> IPodcatcherView.PodcastSelected
		//{
		//    add { throw new NotImplementedException(); }
		//    remove { throw new NotImplementedException(); }
		//}

		event EventHandler<SearchEventArgs> IPodcatcherView.SearchPodcasts
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		event EventHandler<PodcastSearchEventArgs> IPodcatcherView.SearchPodcast
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		void IPodcatcherView.ShowPodcastInfo(Podcast podcast, EpisodeCollection episodes)
		{
			throw new NotImplementedException();
		}

		void IPodcatcherView.LoadSubscriptions(PodcastCollection collection)
		{
			throw new NotImplementedException();
		}

		void IPodcatcherView.LoadSearchResults(PodcastCollection collection)
		{
			throw new NotImplementedException();
		}

		void IPodcatcherView.LoadNewEpisodes(EpisodeCollection collection)
		{
			throw new NotImplementedException();
		}

		event EventHandler IPodcatcherView.CheckForEpisodes
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		event EventHandler<EpisodeEventArgs> IPodcatcherView.IgnoreEpisode
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		//event EventHandler<EpisodeEventArgs> IPodcatcherView.SelectEpisode
		//{
		//    add { throw new NotImplementedException(); }
		//    remove { throw new NotImplementedException(); }
		//}

		//event EventHandler<EpisodeEventArgs> IPodcatcherView.SelectEpisodeForDownload
		//{
		//    add { throw new NotImplementedException(); }
		//    remove { throw new NotImplementedException(); }
		//}

		//event EventHandler IPodcatcherView.SelectAllEpisodesForDownload
		//{
		//    add { throw new NotImplementedException(); }
		//    remove { throw new NotImplementedException(); }
		//}

		//event EventHandler IPodcatcherView.ClearAllEpisodesForDownload
		//{
		//    add { throw new NotImplementedException(); }
		//    remove { throw new NotImplementedException(); }
		//}

		event EventHandler<SearchEventArgs> IPodcatcherView.SearchEpisodes
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		event EventHandler IPodcatcherView.RefreshNavigationList
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		void IPodcatcherView.RssRefreshStarting(int items)
		{
			throw new NotImplementedException();
		}

		void IPodcatcherView.RssRefreshProgress(int item)
		{
			throw new NotImplementedException();
		}

		void IPodcatcherView.RssRefreshFinished(int i)
		{
			throw new NotImplementedException();
		}

		void IPodcatcherView.ShowEpisodes(EpisodeCollection episodes)
		{
			throw new NotImplementedException();
		}

		void IPodcatcherView.RefreshEpisodes(EpisodeCollection episodes)
		{
			throw new NotImplementedException();
		}

		void IPodcatcherView.ShowEpisodeInfo(Episode episode)
		{
			throw new NotImplementedException();
		}

		void IPodcatcherView.EpisodeDownloadStarting(int items)
		{
			throw new NotImplementedException();
		}

		void IPodcatcherView.EpisodeDownloadProgress(int item)
		{
			throw new NotImplementedException();
		}

		void IPodcatcherView.EpisodeDownloadFinished(int i)
		{
			throw new NotImplementedException();
		}

		void IPodcatcherView.ReportError(string message)
		{
			throw new NotImplementedException();
		}

		event EventHandler<PortableMediaSettingsEventArgs> IPodcatcherView.PortableMediaSettingsChanged
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		event EventHandler<RemovableDriveEventArgs> IPodcatcherView.RemovableDeviceArrived
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		event EventHandler<RemovableDriveEventArgs> IPodcatcherView.RemovableDeviceRemoved
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		event EventHandler<TransferCommandEventArgs> IPodcatcherView.TransferContent
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		event EventHandler IPodcatcherView.EjectDevice
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		void IPodcatcherView.ShowDeviceStatus(ViewModels.PortableMediaViewModel vm)
		{
			throw new NotImplementedException();
		}

		void IPodcatcherView.RefreshDeviceStatus(ViewModels.PortableMediaViewModel vm)
		{
			throw new NotImplementedException();
		}

		void IPodcatcherView.TransferStarting(int items)
		{
			throw new NotImplementedException();
		}

		void IPodcatcherView.TransferProgress(int item)
		{
			throw new NotImplementedException();
		}

		void IPodcatcherView.TransferFinished(int i)
		{
			throw new NotImplementedException();
		}


		public event EventHandler<MultiFilePersistenceEventArgs> CopyFiles;

		public event EventHandler<FilePersistenceEventArgs> CopyPlaylist;


		public void EnableTransfer(bool enable)
		{
			throw new NotImplementedException();
		}


		public event EventHandler RefreshPortableDevice;


		public event EventHandler NewEpisodesSelected;

		public event EventHandler DownloadsSelected;


		public event EventHandler SubscriptionsSelected;


		public void ShowSubscriptionList(PodcastCollection collection)
		{
			throw new NotImplementedException();
		}


		event EventHandler IPodcatcherView.NewEpisodesSelected
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		event EventHandler IPodcatcherView.DownloadsSelected
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		event EventHandler IPodcatcherView.SubscriptionsSelected
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		void IPodcatcherView.ShowSubscriptionList(PodcastCollection collection)
		{
			throw new NotImplementedException();
		}

		event EventHandler<FilePersistenceEventArgs> IPodcatcherView.ImportPodcasts
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		event EventHandler<MultiFilePersistenceEventArgs> IPodcatcherView.CopyFiles
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		event EventHandler<FilePersistenceEventArgs> IPodcatcherView.CopyPlaylist
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		event EventHandler IPodcatcherView.RefreshPortableDevice
		{
			add { throw new NotImplementedException(); }
			remove { throw new NotImplementedException(); }
		}

		void IPodcatcherView.EnableTransfer(bool enable)
		{
			throw new NotImplementedException();
		}


		public void LoadDownloadedEpisodes(EpisodeCollection collection)
		{
			throw new NotImplementedException();
		}

		public void LoadPodcastEpisodes(EpisodeCollection collection)
		{
			throw new NotImplementedException();
		}
	}
}
